ಕನ್ನಡ

Next.js ನಲ್ಲಿ ಸ್ಕೇಲೆಬಲ್ ಮತ್ತು ಡೈನಾಮಿಕ್ UI ಗಳನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಿ. ನಮ್ಮ ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ ಸಂಘಟನೆಗಾಗಿ ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಮತ್ತು ಸಂಕೀರ್ಣ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ಗಳಿಗಾಗಿ ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ. ಈಗಲೇ ನಿಮ್ಮ ಕೌಶಲ್ಯವನ್ನು ಹೆಚ್ಚಿಸಿಕೊಳ್ಳಿ!

Next.js ಆ್ಯಪ್ ರೂಟರ್ ಅನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳುವುದು: ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಮತ್ತು ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್ ಆರ್ಕಿಟೆಕ್ಚರ್‌ನ ಆಳವಾದ ನೋಟ

Next.js ಆ್ಯಪ್ ರೂಟರ್‌ನ ಬಿಡುಗಡೆಯು, ಜನಪ್ರಿಯ ರಿಯಾಕ್ಟ್ ಫ್ರೇಮ್‌ವರ್ಕ್‌ನೊಂದಿಗೆ ಡೆವಲಪರ್‌ಗಳು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವ ರೀತಿಯಲ್ಲಿ ಒಂದು ಮಾದರಿ ಬದಲಾವಣೆಯನ್ನು ಗುರುತಿಸಿದೆ. ಪೇಜಸ್ ರೂಟರ್‌ನ ಫೈಲ್-ಆಧಾರಿತ ಸಂಪ್ರದಾಯಗಳಿಂದ ದೂರ ಸರಿದು, ಆ್ಯಪ್ ರೂಟರ್ ಹೆಚ್ಚು ಶಕ್ತಿಶಾಲಿ, ಹೊಂದಿಕೊಳ್ಳುವ ಮತ್ತು ಸರ್ವರ್-ಕೇಂದ್ರಿತ ಮಾದರಿಯನ್ನು ಪರಿಚಯಿಸಿತು. ಈ ವಿಕಸನವು ನಮಗೆ ಹೆಚ್ಚಿನ ನಿಯಂತ್ರಣ ಮತ್ತು ಸಂಘಟನೆಯೊಂದಿಗೆ ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯುಳ್ಳ ಬಳಕೆದಾರ ಇಂಟರ್ಫೇಸ್‌ಗಳನ್ನು ರಚಿಸಲು ಅಧಿಕಾರ ನೀಡುತ್ತದೆ. ಪರಿಚಯಿಸಲಾದ ಅತ್ಯಂತ ಪರಿವರ್ತನಾತ್ಮಕ ವೈಶಿಷ್ಟ್ಯಗಳಲ್ಲಿ ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಮತ್ತು ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್ ಸೇರಿವೆ.

ಎಂಟರ್‌ಪ್ರೈಸ್-ಗ್ರೇಡ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿರುವ ಡೆವಲಪರ್‌ಗಳಿಗೆ, ಈ ಎರಡು ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳುವುದು ಕೇವಲ ಪ್ರಯೋಜನಕಾರಿಯಲ್ಲ - ಇದು ಅತ್ಯಗತ್ಯ. ಅವು ಲೇಔಟ್ ನಿರ್ವಹಣೆ, ರೂಟ್ ಸಂಘಟನೆ ಮತ್ತು ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ಗಳಂತಹ ಡೈನಾಮಿಕ್, ಬಹು-ಪ್ಯಾನಲ್ ಇಂಟರ್ಫೇಸ್‌ಗಳ ರಚನೆಗೆ ಸಂಬಂಧಿಸಿದ ಸಾಮಾನ್ಯ ಆರ್ಕಿಟೆಕ್ಚರಲ್ ಸವಾಲುಗಳನ್ನು ಪರಿಹರಿಸುತ್ತವೆ. ಈ ಮಾರ್ಗದರ್ಶಿಯು ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಮತ್ತು ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್‌ನ ಸಮಗ್ರ ಅನ್ವೇಷಣೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ, ಮೂಲಭೂತ ಪರಿಕಲ್ಪನೆಗಳಿಂದ ಮುಂದುವರಿದ ಅನುಷ್ಠಾನ ತಂತ್ರಗಳು ಮತ್ತು ಜಾಗತಿಕ ಡೆವಲಪರ್ ಪ್ರೇಕ್ಷಕರಿಗಾಗಿ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳಿಗೆ ಚಲಿಸುತ್ತದೆ.

Next.js ಆ್ಯಪ್ ರೂಟರ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು: ಒಂದು ತ್ವರಿತ ಪುನರಾವಲೋಕನ

ನಾವು ನಿರ್ದಿಷ್ಟತೆಗಳಿಗೆ ಧುಮುಕುವ ಮೊದಲು, ಆ್ಯಪ್ ರೂಟರ್‌ನ ಮೂಲ ತತ್ವಗಳನ್ನು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಪುನಃ ನೋಡೋಣ. ಇದರ ಆರ್ಕಿಟೆಕ್ಚರ್ ಡೈರೆಕ್ಟರಿ-ಆಧಾರಿತ ವ್ಯವಸ್ಥೆಯ ಮೇಲೆ ನಿರ್ಮಿಸಲ್ಪಟ್ಟಿದೆ, ಅಲ್ಲಿ ಫೋಲ್ಡರ್‌ಗಳು URL ಸೆಗ್ಮೆಂಟ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತವೆ. ಈ ಫೋಲ್ಡರ್‌ಗಳಲ್ಲಿನ ವಿಶೇಷ ಫೈಲ್‌ಗಳು ಆ ಸೆಗ್ಮೆಂಟ್‌ಗಾಗಿ UI ಮತ್ತು ನಡವಳಿಕೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತವೆ:

ಈ ರಚನೆಯು, ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ಸ್ (RSCs) ನ ಡೀಫಾಲ್ಟ್ ಬಳಕೆಯೊಂದಿಗೆ ಸೇರಿ, ಸರ್ವರ್-ಫಸ್ಟ್ ವಿಧಾನವನ್ನು ಪ್ರೋತ್ಸಾಹಿಸುತ್ತದೆ, ಇದು ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಡೇಟಾ-ಫೆಚಿಂಗ್ ಮಾದರಿಗಳನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸುತ್ತದೆ. ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಮತ್ತು ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್ ಈ ಅಡಿಪಾಯದ ಮೇಲೆ ನಿರ್ಮಿಸಲಾದ ಮುಂದುವರಿದ ಸಂಪ್ರದಾಯಗಳಾಗಿವೆ.

ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಅನ್ನು ಸ್ಪಷ್ಟಪಡಿಸುವುದು: ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ಸುವ್ಯವಸ್ಥೆ ಮತ್ತು ವಿಸ್ತರಣೆಗಾಗಿ ಸಂಘಟಿಸುವುದು

ಒಂದು ಅಪ್ಲಿಕೇಶನ್ ಬೆಳೆದಂತೆ, ರೂಟ್‌ಗಳ ಸಂಖ್ಯೆ ಅಗಾಧವಾಗಬಹುದು. ನೀವು ಮಾರ್ಕೆಟಿಂಗ್‌ಗಾಗಿ ಒಂದು ಪುಟಗಳ ಗುಂಪನ್ನು, ಬಳಕೆದಾರರ ದೃಢೀಕರಣಕ್ಕಾಗಿ ಇನ್ನೊಂದು, ಮತ್ತು ಕೋರ್ ಅಪ್ಲಿಕೇಶನ್ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ಗಾಗಿ ಮೂರನೆಯದನ್ನು ಹೊಂದಿರಬಹುದು. ತಾರ್ಕಿಕವಾಗಿ, ಇವುಗಳು ಪ್ರತ್ಯೇಕ ವಿಭಾಗಗಳಾಗಿವೆ, ಆದರೆ ನಿಮ್ಮ URL ಗಳನ್ನು ಗೊಂದಲಗೊಳಿಸದೆ ನಿಮ್ಮ ಫೈಲ್ ಸಿಸ್ಟಮ್‌ನಲ್ಲಿ ಅವುಗಳನ್ನು ಹೇಗೆ ಸಂಘಟಿಸುತ್ತೀರಿ? ರೂಟ್ ಗ್ರೂಪ್ಸ್ ನಿಖರವಾಗಿ ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತವೆ.

ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಎಂದರೇನು?

ರೂಟ್ ಗ್ರೂಪ್ ಎನ್ನುವುದು URL ರಚನೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರದಂತೆ ನಿಮ್ಮ ಫೈಲ್‌ಗಳು ಮತ್ತು ರೂಟ್ ಸೆಗ್ಮೆಂಟ್‌ಗಳನ್ನು ತಾರ್ಕಿಕ ಗುಂಪುಗಳಾಗಿ ಸಂಘಟಿಸುವ ಒಂದು ಯಾಂತ್ರಿಕತೆಯಾಗಿದೆ. ಫೋಲ್ಡರ್ ಹೆಸರನ್ನು ಆವರಣಗಳಲ್ಲಿ ಸುತ್ತುವ ಮೂಲಕ ನೀವು ರೂಟ್ ಗ್ರೂಪ್ ಅನ್ನು ರಚಿಸುತ್ತೀರಿ, ಉದಾಹರಣೆಗೆ, (marketing) ಅಥವಾ (app).

ಆವರಣಗಳಲ್ಲಿನ ಫೋಲ್ಡರ್ ಹೆಸರು ಸಂಪೂರ್ಣವಾಗಿ ಸಾಂಸ್ಥಿಕ ಉದ್ದೇಶಗಳಿಗಾಗಿರುತ್ತದೆ. URL ಪಥವನ್ನು ನಿರ್ಧರಿಸುವಾಗ Next.js ಇದನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ನಿರ್ಲಕ್ಷಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, app/(marketing)/about/page.js ನಲ್ಲಿರುವ ಫೈಲ್ /about URL ನಲ್ಲಿ ಸೇವೆ ಸಲ್ಲಿಸುತ್ತದೆ, /(marketing)/about ನಲ್ಲಿ ಅಲ್ಲ.

ರೂಟ್ ಗ್ರೂಪ್ಸ್‌ನ ಪ್ರಮುಖ ಉಪಯೋಗಗಳು ಮತ್ತು ಪ್ರಯೋಜನಗಳು

ಸರಳ ಸಂಘಟನೆಯು ಒಂದು ಪ್ರಯೋಜನವಾದರೂ, ರೂಟ್ ಗ್ರೂಪ್ಸ್‌ನ ನಿಜವಾದ ಶಕ್ತಿಯು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ವಿಭಿನ್ನ, ಹಂಚಿದ ಲೇಔಟ್‌ಗಳೊಂದಿಗೆ ವಿಭಾಗಗಳಾಗಿ ವಿಭಜಿಸುವ ಸಾಮರ್ಥ್ಯದಲ್ಲಿದೆ.

1. ರೂಟ್ ಸೆಗ್ಮೆಂಟ್‌ಗಳಿಗಾಗಿ ವಿಭಿನ್ನ ಲೇಔಟ್‌ಗಳನ್ನು ರಚಿಸುವುದು

ಇದು ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಮತ್ತು ಶಕ್ತಿಯುತ ಬಳಕೆಯಾಗಿದೆ. ಎರಡು ಪ್ರಮುಖ ವಿಭಾಗಗಳಿರುವ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ:

ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಇಲ್ಲದೆ, ಈ ವಿಭಾಗಗಳಿಗೆ ವಿಭಿನ್ನ ರೂಟ್ ಲೇಔಟ್‌ಗಳನ್ನು ಅನ್ವಯಿಸುವುದು ಸಂಕೀರ್ಣವಾಗಿರುತ್ತದೆ. ರೂಟ್ ಗ್ರೂಪ್ಸ್‌ನೊಂದಿಗೆ, ಇದು ನಂಬಲಾಗದಷ್ಟು ಅರ್ಥಗರ್ಭಿತವಾಗಿದೆ. ನೀವು ಪ್ರತಿ ಗುಂಪಿನೊಳಗೆ ಒಂದು ಅನನ್ಯ layout.js ಫೈಲ್ ಅನ್ನು ರಚಿಸಬಹುದು.

ಈ ಸನ್ನಿವೇಶಕ್ಕಾಗಿ ಒಂದು ವಿಶಿಷ್ಟ ಫೈಲ್ ರಚನೆ ಇಲ್ಲಿದೆ:

app/
├── (marketing)/
│   ├── layout.js      // ಮಾರ್ಕೆಟಿಂಗ್ ಹೆಡರ್/ಫೂಟರ್‌ನೊಂದಿಗೆ ಸಾರ್ವಜನಿಕ ಲೇಔಟ್
│   ├── page.js        // '/' ನಲ್ಲಿ ರೆಂಡರ್ ಆಗುತ್ತದೆ
│   └── about/
│       └── page.js    // '/about' ನಲ್ಲಿ ರೆಂಡರ್ ಆಗುತ್ತದೆ
├── (app)/
│   ├── layout.js      // ಸೈಡ್‌ಬಾರ್‌ನೊಂದಿಗೆ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಲೇಔಟ್
│   ├── dashboard/
│   │   └── page.js    // '/dashboard' ನಲ್ಲಿ ರೆಂಡರ್ ಆಗುತ್ತದೆ
│   └── settings/
│       └── page.js    // '/settings' ನಲ್ಲಿ ರೆಂಡರ್ ಆಗುತ್ತದೆ
└── layout.js          // ರೂಟ್ ಲೇಔಟ್ (ಉದಾ., <html> ಮತ್ತು <body> ಟ್ಯಾಗ್‌ಗಳಿಗಾಗಿ)

ಈ ಆರ್ಕಿಟೆಕ್ಚರ್‌ನಲ್ಲಿ:

2. ಒಂದು ಸೆಗ್ಮೆಂಟ್ ಅನ್ನು ಹಂಚಿದ ಲೇಔಟ್‌ನಿಂದ ಹೊರಗಿಡುವುದು

ಕೆಲವೊಮ್ಮೆ, ಒಂದು ನಿರ್ದಿಷ್ಟ ಪುಟ ಅಥವಾ ವಿಭಾಗವು ಪೋಷಕ ಲೇಔಟ್‌ನಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ಹೊರಬರಬೇಕಾಗುತ್ತದೆ. ಒಂದು ಸಾಮಾನ್ಯ ಉದಾಹರಣೆಯೆಂದರೆ ಚೆಕ್‌ಔಟ್ ಪ್ರಕ್ರಿಯೆ ಅಥವಾ ಮುಖ್ಯ ಸೈಟ್‌ನ ನ್ಯಾವಿಗೇಷನ್ ಹೊಂದಿರದ ವಿಶೇಷ ಲ್ಯಾಂಡಿಂಗ್ ಪುಟ. ಉನ್ನತ-ಮಟ್ಟದ ಲೇಔಟ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳದ ಗುಂಪಿನಲ್ಲಿ ರೂಟ್ ಅನ್ನು ಇರಿಸುವ ಮೂಲಕ ನೀವು ಇದನ್ನು ಸಾಧಿಸಬಹುದು. ಇದು ಸಂಕೀರ್ಣವೆಂದು ತೋರುತ್ತದೆಯಾದರೂ, ಇದರರ್ಥ ರೂಟ್ ಗುಂಪಿಗೆ ತನ್ನದೇ ಆದ ಉನ್ನತ-ಮಟ್ಟದ layout.js ಅನ್ನು ನೀಡುವುದು, ಅದು ರೂಟ್ ಲೇಔಟ್‌ನಿಂದ `children` ಅನ್ನು ರೆಂಡರ್ ಮಾಡುವುದಿಲ್ಲ.

ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆ: ಬಹು-ಲೇಔಟ್ ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಮಿಸುವುದು

ಮೇಲೆ ವಿವರಿಸಿದ ಮಾರ್ಕೆಟಿಂಗ್/ಆ್ಯಪ್ ರಚನೆಯ ಕನಿಷ್ಠ ಆವೃತ್ತಿಯನ್ನು ನಿರ್ಮಿಸೋಣ.

1. ರೂಟ್ ಲೇಔಟ್ (app/layout.js)

ಈ ಲೇಔಟ್ ಕನಿಷ್ಠವಾಗಿದ್ದು, ಪ್ರತಿಯೊಂದು ಪುಟಕ್ಕೂ ಅನ್ವಯಿಸುತ್ತದೆ. ಇದು ಅತ್ಯಗತ್ಯ HTML ರಚನೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ.

// app/layout.js
export default function RootLayout({ children }) {
  return (
    <html lang="kn">
      <body>{children}</body>
    </html>
  );
}

2. ಮಾರ್ಕೆಟಿಂಗ್ ಲೇಔಟ್ (app/(marketing)/layout.js)

ಈ ಲೇಔಟ್ ಸಾರ್ವಜನಿಕ-ಮುಖಿ ಹೆಡರ್ ಮತ್ತು ಫೂಟರ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ.

// app/(marketing)/layout.js
export default function MarketingLayout({ children }) {
  return (
    <div>
      <header>ಮಾರ್ಕೆಟಿಂಗ್ ಹೆಡರ್</header>
      <main>{children}</main>
      <footer>ಮಾರ್ಕೆಟಿಂಗ್ ಫೂಟರ್</footer>
    </div>
  );
}

3. ಆ್ಯಪ್ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಲೇಔಟ್ (app/(app)/layout.js)

ಈ ಲೇಔಟ್ ವಿಭಿನ್ನ ರಚನೆಯನ್ನು ಹೊಂದಿದೆ, ಇದು ದೃಢೀಕರಿಸಿದ ಬಳಕೆದಾರರಿಗಾಗಿ ಸೈಡ್‌ಬಾರ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ.

// app/(app)/layout.js
export default function AppLayout({ children }) {
  return (
    <div style={{ display: 'flex' }}>
      <aside style={{ width: '200px', borderRight: '1px solid #ccc' }}>
        ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಸೈಡ್‌ಬಾರ್
      </aside>
      <main style={{ flex: 1, padding: '20px' }}>{children}</main>
    </div>
  );
}

ಈ ರಚನೆಯೊಂದಿಗೆ, /about ಗೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡುವುದು ಪುಟವನ್ನು `MarketingLayout` ನೊಂದಿಗೆ ರೆಂಡರ್ ಮಾಡುತ್ತದೆ, ಆದರೆ /dashboard ಗೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡುವುದು ಅದನ್ನು `AppLayout` ನೊಂದಿಗೆ ರೆಂಡರ್ ಮಾಡುತ್ತದೆ. URL ಸ್ವಚ್ಛ ಮತ್ತು ಶಬ್ದಾರ್ಥವಾಗಿ ಉಳಿಯುತ್ತದೆ, ಆದರೆ ನಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್‌ನ ಫೈಲ್ ರಚನೆಯು ಸಂಪೂರ್ಣವಾಗಿ ಸಂಘಟಿತ ಮತ್ತು ವಿಸ್ತರಿಸಬಲ್ಲದಾಗಿದೆ.

ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್‌ನೊಂದಿಗೆ ಡೈನಾಮಿಕ್ UI ಗಳನ್ನು ಅನ್ಲಾಕ್ ಮಾಡುವುದು

ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಅಪ್ಲಿಕೇಶನ್‌ನ ವಿಭಿನ್ನ ವಿಭಾಗಗಳನ್ನು ಸಂಘಟಿಸಲು ಸಹಾಯ ಮಾಡಿದರೆ, ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್ ವಿಭಿನ್ನ ಸವಾಲನ್ನು ಪರಿಹರಿಸುತ್ತದೆ: ಒಂದೇ ಲೇಔಟ್‌ನಲ್ಲಿ ಬಹು, ಸ್ವತಂತ್ರ ಪುಟ ವೀಕ್ಷಣೆಗಳನ್ನು ಪ್ರದರ್ಶಿಸುವುದು. ಇದು ಸಂಕೀರ್ಣ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ಗಳು, ಸಾಮಾಜಿಕ ಮಾಧ್ಯಮ ಫೀಡ್‌ಗಳು, ಅಥವಾ ವಿಭಿನ್ನ ಪ್ಯಾನಲ್‌ಗಳನ್ನು ಏಕಕಾಲದಲ್ಲಿ ರೆಂಡರ್ ಮಾಡಿ ನಿರ್ವಹಿಸಬೇಕಾದ ಯಾವುದೇ UI ಗೆ ಸಾಮಾನ್ಯ ಅವಶ್ಯಕತೆಯಾಗಿದೆ.

ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್ ಎಂದರೇನು?

ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್ ಒಂದೇ ಲೇಔಟ್‌ನಲ್ಲಿ ಏಕಕಾಲದಲ್ಲಿ ಒಂದು ಅಥವಾ ಹೆಚ್ಚು ಪುಟಗಳನ್ನು ರೆಂಡರ್ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಈ ರೂಟ್‌ಗಳನ್ನು ಸ್ಲಾಟ್ಸ್ ಎಂಬ ವಿಶೇಷ ಫೋಲ್ಡರ್ ಸಂಪ್ರದಾಯವನ್ನು ಬಳಸಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುತ್ತದೆ. ಸ್ಲಾಟ್‌ಗಳನ್ನು @folderName ಸಿಂಟ್ಯಾಕ್ಸ್ ಬಳಸಿ ರಚಿಸಲಾಗುತ್ತದೆ. ಅವು URL ರಚನೆಯ ಭಾಗವಾಗಿಲ್ಲ; ಬದಲಾಗಿ, ಅವುಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹತ್ತಿರದ ಹಂಚಿದ ಪೋಷಕ `layout.js` ಫೈಲ್‌ಗೆ ಪ್ರಾಪ್ಸ್ ಆಗಿ ರವಾನಿಸಲಾಗುತ್ತದೆ.

ಉದಾಹರಣೆಗೆ, ನೀವು ತಂಡದ ಚಟುವಟಿಕೆ ಫೀಡ್ ಮತ್ತು ಅನಾಲಿಟಿಕ್ಸ್ ಚಾರ್ಟ್ ಅನ್ನು ಅಕ್ಕಪಕ್ಕದಲ್ಲಿ ಪ್ರದರ್ಶಿಸಬೇಕಾದ ಲೇಔಟ್ ಹೊಂದಿದ್ದರೆ, ನೀವು ಎರಡು ಸ್ಲಾಟ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು: `@team` ಮತ್ತು `@analytics`.

ಮೂಲ ಕಲ್ಪನೆ: ಸ್ಲಾಟ್ಸ್

ಸ್ಲಾಟ್‌ಗಳನ್ನು ನಿಮ್ಮ ಲೇಔಟ್‌ನಲ್ಲಿ ಹೆಸರಿಸಲಾದ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್‌ಗಳೆಂದು ಯೋಚಿಸಿ. ಲೇಔಟ್ ಫೈಲ್ ಈ ಸ್ಲಾಟ್‌ಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಪ್ರಾಪ್ಸ್ ಆಗಿ ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಎಲ್ಲಿ ರೆಂಡರ್ ಮಾಡಬೇಕೆಂದು ನಿರ್ಧರಿಸುತ್ತದೆ.

ಈ ಲೇಔಟ್ ಕಾಂಪೊನೆಂಟ್ ಅನ್ನು ಪರಿಗಣಿಸಿ:

// ಎರಡು ಸ್ಲಾಟ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸುವ ಲೇಔಟ್: 'team' ಮತ್ತು 'analytics'
export default function DashboardLayout({ children, team, analytics }) {
  return (
    <div>
      {children}
      <div style={{ display: 'flex' }}>
        {team}
        {analytics}
      </div>
    </div>
  );
}

ಇಲ್ಲಿ, `children`, `team`, ಮತ್ತು `analytics` ಎಲ್ಲವೂ ಸ್ಲಾಟ್‌ಗಳಾಗಿವೆ. `children` ಒಂದು ಅವ್ಯಕ್ತ ಸ್ಲಾಟ್ ಆಗಿದ್ದು, ಅದು ಡೈರೆಕ್ಟರಿಯಲ್ಲಿನ ಪ್ರಮಾಣಿತ `page.js` ಗೆ ಅನುರೂಪವಾಗಿದೆ. `team` ಮತ್ತು `analytics` ವ್ಯಕ್ತ ಸ್ಲಾಟ್‌ಗಳಾಗಿದ್ದು, ಇವುಗಳನ್ನು ಫೈಲ್ ಸಿಸ್ಟಮ್‌ನಲ್ಲಿ `@` ಪೂರ್ವಪ್ರತ್ಯಯದೊಂದಿಗೆ ರಚಿಸಬೇಕು.

ಪ್ರಮುಖ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಅನುಕೂಲಗಳು

ನೈಜ-ಪ್ರಪಂಚದ ಸನ್ನಿವೇಶ: ಒಂದು ಸಂಕೀರ್ಣ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ನಿರ್ಮಿಸುವುದು

/dashboard URL ನಲ್ಲಿ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಅನ್ನು ವಿನ್ಯಾಸಿಸೋಣ. ಇದು ಮುಖ್ಯ ವಿಷಯ ಪ್ರದೇಶ, ತಂಡದ ಚಟುವಟಿಕೆ ಪ್ಯಾನಲ್ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯ ಅನಾಲಿಟಿಕ್ಸ್ ಪ್ಯಾನಲ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ.

ಫೈಲ್ ರಚನೆ:

app/
└── dashboard/
    ├── @analytics/
    │   ├── page.js          // ಅನಾಲಿಟಿಕ್ಸ್ ಸ್ಲಾಟ್‌ಗಾಗಿ UI
    │   └── loading.js     // ನಿರ್ದಿಷ್ಟವಾಗಿ ಅನಾಲಿಟಿಕ್ಸ್‌ಗಾಗಿ ಲೋಡಿಂಗ್ UI
    ├── @team/
    │   └── page.js          // ಟೀಮ್ ಸ್ಲಾಟ್‌ಗಾಗಿ UI
    ├── layout.js            // ಸ್ಲಾಟ್‌ಗಳನ್ನು ಸಂಘಟಿಸುವ ಲೇಔಟ್
    └── page.js              // ಅವ್ಯಕ್ತ 'children' ಸ್ಲಾಟ್ (ಮುಖ್ಯ ವಿಷಯ)

1. ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಲೇಔಟ್ (app/dashboard/layout.js)

ಈ ಲೇಔಟ್ ಮೂರು ಸ್ಲಾಟ್‌ಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಜೋಡಿಸುತ್ತದೆ.

// app/dashboard/layout.js
export default function DashboardLayout({ children, analytics, team }) {
  const isLoggedIn = true; // ನಿಜವಾದ ದೃಢೀಕರಣ ತರ್ಕದೊಂದಿಗೆ ಬದಲಾಯಿಸಿ

  return isLoggedIn ? (
    <div>
      <h1>ಮುಖ್ಯ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್</h1>
      {children}
      <div style={{ marginTop: '20px', display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '20px' }}>
        <div style={{ border: '1px solid blue', padding: '10px' }}>
          <h2>ತಂಡದ ಚಟುವಟಿಕೆ</h2>
          {team}
        </div>
        <div style={{ border: '1px solid green', padding: '10px' }}>
          <h2>ಕಾರ್ಯಕ್ಷಮತೆಯ ಅನಾಲಿಟಿಕ್ಸ್</h2>
          {analytics}
        </div>
      </div>
    </div>
  ) : (
    <div>ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ವೀಕ್ಷಿಸಲು ದಯವಿಟ್ಟು ಲಾಗಿನ್ ಮಾಡಿ.</div>
  );
}

2. ಸ್ಲಾಟ್ ಪುಟಗಳು (ಉದಾ., app/dashboard/@analytics/page.js)

ಪ್ರತಿ ಸ್ಲಾಟ್‌ನ page.js ಫೈಲ್ ಆ ನಿರ್ದಿಷ್ಟ ಪ್ಯಾನಲ್‌ಗಾಗಿ UI ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ.

// app/dashboard/@analytics/page.js
async function getAnalyticsData() {
  // ನೆಟ್‌ವರ್ಕ್ ವಿನಂತಿಯನ್ನು ಅನುಕರಿಸುವುದು
  await new Promise(resolve => setTimeout(resolve, 3000));
  return { views: '1.2M', revenue: '$50,000' };
}

export default async function AnalyticsPage() {
  const data = await getAnalyticsData();
  return (
    <div>
      <p>ಪುಟ ವೀಕ್ಷಣೆಗಳು: {data.views}</p>
      <p>ಆದಾಯ: {data.revenue}</p>
    </div>
  );
}

// app/dashboard/@analytics/loading.js
export default function Loading() {
  return <p>ಅನಾಲಿಟಿಕ್ಸ್ ಡೇಟಾ ಲೋಡ್ ಆಗುತ್ತಿದೆ...</p>;
}

ಈ ಸೆಟಪ್‌ನೊಂದಿಗೆ, ಬಳಕೆದಾರರು /dashboard ಗೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿದಾಗ, Next.js `DashboardLayout` ಅನ್ನು ರೆಂಡರ್ ಮಾಡುತ್ತದೆ. ಲೇಔಟ್ dashboard/page.js, dashboard/@team/page.js, ಮತ್ತು dashboard/@analytics/page.js ನಿಂದ ರೆಂಡರ್ ಮಾಡಿದ ವಿಷಯವನ್ನು ಪ್ರಾಪ್ಸ್ ಆಗಿ ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಅದಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಇರಿಸುತ್ತದೆ. ಮುಖ್ಯವಾಗಿ, ಅನಾಲಿಟಿಕ್ಸ್ ಪ್ಯಾನಲ್ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ನ ಉಳಿದ ಭಾಗದ ರೆಂಡರಿಂಗ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸದೆ 3 ಸೆಕೆಂಡುಗಳ ಕಾಲ ತನ್ನದೇ ಆದ `loading.js` ಸ್ಥಿತಿಯನ್ನು ತೋರಿಸುತ್ತದೆ.

default.js ನೊಂದಿಗೆ ಹೊಂದಾಣಿಕೆಯಾಗದ ರೂಟ್‌ಗಳನ್ನು ನಿಭಾಯಿಸುವುದು

ಒಂದು ನಿರ್ಣಾಯಕ ಪ್ರಶ್ನೆ ಉದ್ಭವಿಸುತ್ತದೆ: ಪ್ರಸ್ತುತ URL ಗಾಗಿ ಸ್ಲಾಟ್‌ನ ಸಕ್ರಿಯ ಸ್ಥಿತಿಯನ್ನು Next.js ಹಿಂಪಡೆಯಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ ಏನಾಗುತ್ತದೆ? ಉದಾಹರಣೆಗೆ, ಆರಂಭಿಕ ಲೋಡ್ ಅಥವಾ ಪುಟದ ಮರುಲೋಡ್ ಸಮಯದಲ್ಲಿ, URL /dashboard ಆಗಿರಬಹುದು, ಇದು @team ಅಥವಾ `@analytics` ಸ್ಲಾಟ್‌ಗಳ ಒಳಗೆ ಏನು ತೋರಿಸಬೇಕು ಎಂಬುದರ ಕುರಿತು ನಿರ್ದಿಷ್ಟ ಸೂಚನೆಗಳನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, Next.js 404 ದೋಷವನ್ನು ರೆಂಡರ್ ಮಾಡುತ್ತದೆ.

ಇದನ್ನು ತಡೆಗಟ್ಟಲು, ನಾವು ಪ್ಯಾರಲಲ್ ರೂಟ್‌ನೊಳಗೆ default.js ಫೈಲ್ ಅನ್ನು ರಚಿಸುವ ಮೂಲಕ ಫಾಲ್‌ಬ್ಯಾಕ್ UI ಅನ್ನು ಒದಗಿಸಬಹುದು.

ಉದಾಹರಣೆ:

// app/dashboard/@analytics/default.js
export default function DefaultAnalyticsPage() {
  return (
    <div>
      <p>ಯಾವುದೇ ಅನಾಲಿಟಿಕ್ಸ್ ಡೇಟಾವನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗಿಲ್ಲ.</p>
    </div>
  );
}

ಈಗ, ಅನಾಲಿಟಿಕ್ಸ್ ಸ್ಲಾಟ್ ಹೊಂದಾಣಿಕೆಯಾಗದಿದ್ದರೆ, Next.js 404 ಪುಟದ ಬದಲಿಗೆ `default.js` ನ ವಿಷಯವನ್ನು ರೆಂಡರ್ ಮಾಡುತ್ತದೆ. ಇದು ಸುಗಮ ಬಳಕೆದಾರ ಅನುಭವವನ್ನು ರಚಿಸಲು ಅತ್ಯಗತ್ಯವಾಗಿದೆ, ವಿಶೇಷವಾಗಿ ಸಂಕೀರ್ಣ ಪ್ಯಾರಲಲ್ ರೂಟ್ ಸೆಟಪ್‌ನ ಆರಂಭಿಕ ಲೋಡ್‌ನಲ್ಲಿ.

ಮುಂದುವರಿದ ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳಿಗಾಗಿ ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಮತ್ತು ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್ ಅನ್ನು ಸಂಯೋಜಿಸುವುದು

ಆ್ಯಪ್ ರೂಟರ್‌ನ ನಿಜವಾದ ಶಕ್ತಿಯನ್ನು ನೀವು ಅದರ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಂಯೋಜಿಸಿದಾಗ ಅರಿತುಕೊಳ್ಳಲಾಗುತ್ತದೆ. ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಮತ್ತು ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್ ಅತ್ಯಾಧುನಿಕ ಮತ್ತು ಹೆಚ್ಚು ಸಂಘಟಿತ ಅಪ್ಲಿಕೇಶನ್ ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳನ್ನು ರಚಿಸಲು ಸುಂದರವಾಗಿ ಒಟ್ಟಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತವೆ.

ಬಳಕೆಯ ಪ್ರಕರಣ: ಒಂದು ಬಹು-ಮಾದರಿ ವಿಷಯ ವೀಕ್ಷಕ

ಮೀಡಿಯಾ ಗ್ಯಾಲರಿ ಅಥವಾ ಡಾಕ್ಯುಮೆಂಟ್ ವೀಕ್ಷಕದಂತಹ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ, ಅಲ್ಲಿ ಬಳಕೆದಾರರು ಒಂದು ಐಟಂ ಅನ್ನು ವೀಕ್ಷಿಸಬಹುದು ಆದರೆ ಹಿನ್ನೆಲೆ ಪುಟದ ಸಂದರ್ಭವನ್ನು ಕಳೆದುಕೊಳ್ಳದೆ ಅದರ ವಿವರಗಳನ್ನು ನೋಡಲು ಮಾದರಿ ವಿಂಡೋವನ್ನು ತೆರೆಯಬಹುದು. ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ "ಇಂಟರ್ಸೆಪ್ಟಿಂಗ್ ರೂಟ್" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಇದು ಪ್ಯಾರಲಲ್ ರೂಟ್‌ಗಳ ಮೇಲೆ ನಿರ್ಮಿಸಲಾದ ಶಕ್ತಿಯುತ ಮಾದರಿಯಾಗಿದೆ.

ಒಂದು ಫೋಟೋ ಗ್ಯಾಲರಿಯನ್ನು ರಚಿಸೋಣ. ನೀವು ಫೋಟೋವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ, ಅದು ಮಾದರಿಯಲ್ಲಿ ತೆರೆಯುತ್ತದೆ. ಆದರೆ ನೀವು ಪುಟವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಿದರೆ ಅಥವಾ ಫೋಟೋದ URL ಗೆ ನೇರವಾಗಿ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿದರೆ, ಅದು ಆ ಫೋಟೋಗೆ ಮೀಸಲಾದ ಪುಟವನ್ನು ತೋರಿಸಬೇಕು.

ಫೈಲ್ ರಚನೆ:

app/
├── @modal/(..)(..)photos/[id]/page.js  // ಮೋಡಲ್‌ಗಾಗಿ ತಡೆಹಿಡಿಯಲಾದ ರೂಟ್
├── photos/
│   └── [id]/
│       └── page.js                  // ಮೀಸಲಾದ ಫೋಟೋ ಪುಟ
├── layout.js                        // @modal ಸ್ಲಾಟ್ ಅನ್ನು ಸ್ವೀಕರಿಸುವ ರೂಟ್ ಲೇಔಟ್
└── page.js                          // ಮುಖ್ಯ ಗ್ಯಾಲರಿ ಪುಟ

ವಿವರಣೆ:

ಈ ಮಾದರಿಯು ಪ್ಯಾರಲಲ್ ರೂಟ್‌ಗಳನ್ನು (@modal ಸ್ಲಾಟ್) ಮುಂದುವರಿದ ರೂಟಿಂಗ್ ಸಂಪ್ರದಾಯಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಿ, ಕೈಯಾರೆ ಕಾರ್ಯಗತಗೊಳಿಸಲು ತುಂಬಾ ಸಂಕೀರ್ಣವಾದ ಸುಗಮ ಬಳಕೆದಾರ ಅನುಭವವನ್ನು ರಚಿಸುತ್ತದೆ.

ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು ಮತ್ತು ಸಾಮಾನ್ಯ ಅಪಾಯಗಳು

ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು

ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು

ತಪ್ಪಿಸಬೇಕಾದ ಸಾಮಾನ್ಯ ಅಪಾಯಗಳು

ತೀರ್ಮಾನ: ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಭವಿಷ್ಯವನ್ನು ನಿರ್ಮಿಸುವುದು

Next.js ಆ್ಯಪ್ ರೂಟರ್, ರೂಟ್ ಗ್ರೂಪ್ಸ್ ಮತ್ತು ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್ ನಂತಹ ವೈಶಿಷ್ಟ್ಯಗಳೊಂದಿಗೆ, ಆಧುನಿಕ ವೆಬ್ ಅಭಿವೃದ್ಧಿಗೆ ದೃಢವಾದ ಮತ್ತು ವಿಸ್ತರಿಸಬಲ್ಲ ಅಡಿಪಾಯವನ್ನು ಒದಗಿಸುತ್ತದೆ. ರೂಟ್ ಗ್ರೂಪ್ಸ್ URL ಶಬ್ದಾರ್ಥವನ್ನು ರಾಜಿ ಮಾಡಿಕೊಳ್ಳದೆ ಕೋಡ್ ಅನ್ನು ಸಂಘಟಿಸಲು ಮತ್ತು ವಿಭಿನ್ನ ಲೇಔಟ್‌ಗಳನ್ನು ಅನ್ವಯಿಸಲು ಒಂದು ಸೊಗಸಾದ ಪರಿಹಾರವನ್ನು ನೀಡುತ್ತದೆ. ಪ್ಯಾರಲಲ್ ರೂಟ್ಸ್ ಸ್ವತಂತ್ರ ಸ್ಥಿತಿಗಳೊಂದಿಗೆ ಡೈನಾಮಿಕ್, ಬಹು-ಪ್ಯಾನಲ್ ಇಂಟರ್ಫೇಸ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಅನ್ಲಾಕ್ ಮಾಡುತ್ತದೆ, ಇದು ಹಿಂದೆ ಸಂಕೀರ್ಣ ಕ್ಲೈಂಟ್-ಸೈಡ್ ಸ್ಟೇಟ್ ಮ್ಯಾನೇಜ್‌ಮೆಂಟ್ ಮೂಲಕ ಮಾತ್ರ ಸಾಧಿಸಬಹುದಾಗಿತ್ತು.

ಈ ಶಕ್ತಿಯುತ ಆರ್ಕಿಟೆಕ್ಚರಲ್ ಮಾದರಿಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡು ಮತ್ತು ಸಂಯೋಜಿಸುವ ಮೂಲಕ, ನೀವು ಸರಳ ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ಮೀರಿ ಸಾಗಬಹುದು ಮತ್ತು ಇಂದಿನ ಬಳಕೆದಾರರ ಬೇಡಿಕೆಗಳನ್ನು ಪೂರೈಸುವ ಅತ್ಯಾಧುನಿಕ, ಕಾರ್ಯಕ್ಷಮತೆಯುಳ್ಳ ಮತ್ತು ನಿರ್ವಹಿಸಬಲ್ಲ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಪ್ರಾರಂಭಿಸಬಹುದು. ಕ್ಲಾಸಿಕ್ ಪೇಜಸ್ ರೂಟರ್‌ಗಿಂತ ಕಲಿಕೆಯ ರೇಖೆಯು ಕಡಿದಾಗಿರಬಹುದು, ಆದರೆ ಅಪ್ಲಿಕೇಶನ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಮತ್ತು ಬಳಕೆದಾರ ಅನುಭವದ ದೃಷ್ಟಿಯಿಂದ ಪ್ರತಿಫಲವು ಅಪಾರವಾಗಿದೆ. ನಿಮ್ಮ ಮುಂದಿನ ಪ್ರಾಜೆಕ್ಟ್‌ನಲ್ಲಿ ಈ ಪರಿಕಲ್ಪನೆಗಳೊಂದಿಗೆ ಪ್ರಯೋಗವನ್ನು ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು Next.js ನ ಸಂಪೂರ್ಣ ಸಾಮರ್ಥ್ಯವನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಿ.